package cn.epsilon3.service.jwtProcessor;

import io.jsonwebtoken.Claims;

import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.Map;

/**
 * jwt处理器
 *
 * @author epsilon3
 */
public interface JwtTokenProcessor {

    /**
     * 创建token
     *
     * @param claims token负载
     * @return
     */
    String createToken(String subject,
                       String issuer,
                       String audience,
                       Map<String, Object> claims);

    /**
     * 解析token
     *
     * @param token
     * @return
     */
    Claims parseToken(String token);


    /**
     * 解析token
     *
     * @param token
     * @param key
     * @param clazz
     * @return
     */
    Object parseToken(String token,String key,Class clazz);

    /**
     * 判断token是否有效
     *
     * @param token
     * @return
     */
    Boolean checkToken(String token);

    /**
     * 获取RSAPublicKey
     *
     * @param publicKey
     * @return
     */
    RSAPublicKey getRsaPublicKey(String publicKey);

    /**
     * 获取RSAPrivateKey
     *
     * @param privateKey
     * @return
     */
    RSAPrivateKey getRsaPrivateKey(String privateKey);
}
